1. Technical Field
This disclosure relates to non-volatile storage subsystems, including but not limited to non-volatile drives. More particularly, the disclosure relates to systems and methods for improved mechanisms for testing of error recovery of solid state storage devices.
2. Description of the Related Art
Non-volatile memory devices can be used to store data communicated by host devices over various interfaces. Various communication protocols are used to facilitate this data exchange. These communication protocols need to be reliably implemented by data storage systems that include host devices and non-volatile memory devices.
Non-volatile memory devices store information in an array of memory cells constructed with floating gate transistors. Typically, non-volatile memory devices can endure a limited number of write cycles over its useful life. Various factors can contribute to data errors in non-volatile memory devices, which include charge loss or leakage over time, read disturb, and device wear caused by program/erase cycles. Non-volatile memory degradation can cause stored data to be corrupted. For example, when the number of bit errors on a read operation exceeds the ECC (error correction code) correction's capability of the non-volatile memory device, a read operation fails.
Data storage systems are generally required to meet certain thresholds for data reliability and for speed of data storage and retrieval. To meet these thresholds, data storage systems generally include various error recovery mechanisms, which need to be efficient and robust. Error recovery mechanisms can detect or correct errors due to the communication protocols as well as due to data errors of non-volatile memory devices. A reliable data storage system needs to implement capabilities to test the error recovery mechanisms in a timely, efficient, and reliable manner.
One known method for testing error recovery mechanisms is to program and erase non-volatile memory cells an arbitrary and random manner. However, this method tends to “wear out” or degrade the endurance of the non-volatile memory, while lacking the ability to perform tests in a deterministic manner. As a result, this method is generally not useful for testing error recovery mechanisms.